﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{

    public class Menu
    {

        enum MenuState { MAINMENU, INSTRUCTIONS, DIFFICULT }//enum que controla o estado do menu

        MenuState menuState = MenuState.MAINMENU;
        Texture2D imageMenu, instructionImage, difficultImage;//variaveis para as imagens de menu, instruçoes e dificuldade, respectivamente
        KeyboardState old_ks;//estado antigo do teclado
        
        GamePlay gp = new GamePlay();//instancia da classe gameplay      

        public Menu()
        {
            //instancia as variaveis das imagens
            imageMenu = GameManager.self.Content.Load<Texture2D>("menupong");
            instructionImage = GameManager.self.Content.Load<Texture2D>("menuInstructions");
            difficultImage = GameManager.self.Content.Load<Texture2D>("menuDifficult");
        }
        public void Update(GameTime gameTime)
        {
            
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            KeyboardState ks = Keyboard.GetState();

            if (menuState == MenuState.MAINMENU)
                spriteBatch.Draw(imageMenu, Vector2.Zero, Color.White);//desenha a imagem do menu principal
            if (menuState == MenuState.INSTRUCTIONS)
            {
                spriteBatch.Draw(instructionImage, Vector2.Zero, Color.White);//desenha a imagem da tela de instruçoes

                if (Keyboard.GetState().IsKeyDown(Keys.B)) //dá a opção do jogador voltar para o menu principal
                    menuState = MenuState.MAINMENU;
            }
            if (menuState == MenuState.DIFFICULT)
            {
                spriteBatch.Draw(difficultImage, Vector2.Zero, Color.White);//desenha a imagem da tela de escolha da dificuldade

                if (old_ks.IsKeyUp(Keys.D1) && ks.IsKeyDown(Keys.D1))//seta a velocidade da bola de acordo com o nivel desejado
                    gp.SpeedBall = new Vector2(3, 3);
                else if (old_ks.IsKeyUp(Keys.D2) && ks.IsKeyDown(Keys.D2))//seta a velocidade da bola de acordo com o nivel desejado
                    gp.SpeedBall = new Vector2(5, 5);
                else if (old_ks.IsKeyUp(Keys.D3) && ks.IsKeyDown(Keys.D3))//seta a velocidade da bola de acordo com o nivel desejado
                    gp.SpeedBall = new Vector2(7, 7);
                else if (old_ks.IsKeyUp(Keys.D4) && ks.IsKeyDown(Keys.D4))//seta a velocidade da bola de acordo com o nivel desejado
                    gp.SpeedBall = new Vector2(9, 9);
                else if (old_ks.IsKeyUp(Keys.D5) && ks.IsKeyDown(Keys.D5))//seta a velocidade da bola de acordo com o nivel desejado
                    gp.SpeedBall = new Vector2(11, 11);
                else if (old_ks.IsKeyUp(Keys.D6) && ks.IsKeyDown(Keys.D6))//seta a velocidade da bola de acordo com o nivel desejado
                    gp.SpeedBall = new Vector2(13, 13);

                if (Keyboard.GetState().IsKeyDown(Keys.B))//dá a opção do jogador voltar para o menu principal
                    menuState = MenuState.MAINMENU;
            }

            if (menuState == MenuState.MAINMENU && Keyboard.GetState().IsKeyDown(Keys.D1))//muda o estado do Game para gameplay e o jogo inicia
            {
                GameManager.currentGameState = GameState.GamePlay;
            }
            else if (menuState == MenuState.MAINMENU && old_ks.IsKeyUp(Keys.D2) && ks.IsKeyDown(Keys.D2))//se o jogador apertar a tecla 2 no menu principal, muda para a tela de instruçoes
            {
                menuState = MenuState.INSTRUCTIONS;
            }
            else if (menuState == MenuState.MAINMENU && old_ks.IsKeyUp(Keys.D3) && ks.IsKeyDown(Keys.D3))//se o jogador apertar a tecla 3 no menu principal, muda para a tela de deficuldade
            {
                menuState = MenuState.DIFFICULT;
            }
            else if (menuState == MenuState.MAINMENU && old_ks.IsKeyUp(Keys.D4) && ks.IsKeyDown(Keys.D4))//se o jogador apertar a tecla 4 no menu principal, o jogo fecha
            {
                GameManager.self.Exit();
            }

            old_ks = ks;
        }
    }
}
